package com.xxxtea.sdk.sms;

import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 阿里云短信发送请求参数对象
 * 
 * 封装调用阿里云短信API所需的请求参数，包括：
 * - 手机号码
 * - 短信签名
 * - 短信模板
 * - 模板参数
 * - 扩展字段
 * 
 * 使用@JSONField注解映射阿里云API的字段名
 * 
 * @author badman
 * @since 1.0.0
 */
@Data
@ApiModel(description = "阿里云短信发送请求")
public class SendSmsRequest {

	/**
	 * 接收短信的手机号码
	 * 支持单个或多个手机号码，多个号码用逗号分隔
	 */
	@ApiModelProperty(value = "接收短信的手机号码", required = true)
	@JSONField(name = "PhoneNumbers")
	private String phoneNumbers;

	/**
	 * 短信签名名称
	 * 在阿里云短信服务控制台申请的签名
	 */
	@ApiModelProperty(value = "短信签名名称", required = true)
	@JSONField(name = "SignName")
	private String signName;

	/**
	 * 短信模板ID
	 * 在阿里云短信服务控制台申请的模板ID
	 */
	@ApiModelProperty(value = "短信模板ID", required = true)
	@JSONField(name = "TemplateCode")
	private String templateCode;

	/**
	 * 短信模板变量对应的实际值
	 * JSON格式的字符串，如：{"code":"123456"}
	 */
	@ApiModelProperty(value = "短信模板变量对应的实际值")
	@JSONField(name = "TemplateParam")
	private String templateParam;

	/**
	 * 上行短信扩展码
	 * 可选参数，用于上行短信的扩展
	 */
	@ApiModelProperty(value = "上行短信扩展码")
	@JSONField(name = "SmsUpExtendCode")
	private String smsUpExtendCode;

	/**
	 * 外部流水扩展字段
	 * 可选参数，用于业务扩展
	 */
	@ApiModelProperty(value = "外部流水扩展字段")
	@JSONField(name = "OutId")
	private String outId;
}